package com.material_demo.business.service;

import com.material_demo.business.dto.MaterialDTO;
import com.material_demo.business.dto.MaterialExcelDTO;
import com.material_demo.business.dto.MaterialQueryDTO;
import com.material_demo.business.entity.Material;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @author 陈粮
 * @contact  18434365993
 */
public interface MaterialService {
    /**
     * 创建物料
     * @param materialDTO 物料信息
     * @return 创建后的物料信息
     */
    Material createMaterial(MaterialDTO materialDTO);

    /**
     * 更新物料信息
     * @param materialDTO 更新的物料信息
     * @return 更新后的物料信息
     */
    Material updateMaterial(MaterialDTO materialDTO);

    /**
     * 删除物料
     * @param id 被删除物料id
     * @param version 本删除物料乐观锁版本号
     */
    void deleteMaterial(Long id, Integer version);

    /**
     * 通过id查询物料
     * @param id 物料id
     * @return 物料id对应的物料信息
     */
    Material getMaterialById(Long id);

    /**
     * 全部数据查询，不建议使用，标记删除
     * @return 全部物料信息
     */
    @Deprecated
    List<Material> getAllMaterials();

    /**
     * 分页查询
     * @param query 查询参数封装
     * @return 分页结果
     */
    PageInfo<Material> page(MaterialQueryDTO query);

    /**
     * 导入物料
     * @param materialDTOs 导入的物料信息
     */
    void importMaterials(List<MaterialExcelDTO> materialDTOs);

    /**
     * 导出物料
     * @param query 导出的查询
     * @return 查询对应的物料信息
     */
    List<MaterialExcelDTO> exportMaterials(MaterialDTO query);
}